- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Если размеры дерева не вмещают его содержимое, автоматически появляется полоса прокрутки.
Размеры дерева устанавливаются методом setPrefSize.
И рамку дерева можно стилизовать с помощью CSS свойства -fx-border.
В документации сказано, что узел TreeItem создается не обязательно на основе строки, а на основе объекта, который будет сохранен как значение этого узла.
Однако в дереве отображается строковое представление этого объекта, полученное методом toString.
Поэтому если создается дерево объектов, класс этих объектов должен иметь переопределенный метод toString.
Свойство selectionModel класса TreeView дает возможность определить множественность выбора и обработку события выбора узла дерева.
Возможность выбора нескольких узлов устанавливается методом setSelectionMode с константой MULTIPLE для модели выбора SelectionModel.
Также для свойств selectedIndexProperty и selectedItemProperty модели выбора можно установить слушателя, который будет обрабатывать выбор узлов дерева пользователем.
Свойство cellFactory класса TreeView позволяет заполнить дерево TreeView пользовательскими компонентами TreeCell.
Компонент TreeCell отвечает за отображение узла дерева TreeView.
Класс TreeCell имеет стандартные реализации CheckBoxTreeCell, ChoiceBoxTreeCell, ComboBoxTreeCell, TextFieldTreeCell.
Свойство editable класса TreeView определяет редактируемость дерева.
По умолчанию это свойство имеет значение false.
В этом примере мы создаем редактируемое дерево, передавая в метод setCellFactory ячейку с текстовым полем TextFieldTreeCell.
Свойства onEditCancel, onEditCommit и onEditStart дерева обеспечивают обработку событий редактирования.
Здесь мы используем метод setOnEditCommit, который устанавливает обработчик события завершения редактирования, когда пользователь нажимает клавишу Enter.
Для создания дерева со своими, пользовательскими редактируемыми ячейками, необходимо создать класс, расширяющий класс TableCell, в котором переопределяются методы startEdit, cancelEdit, commitEdit и updateItem с использованием редактируемых текстовых полей, и наполнить его экземплярами дерево с помощью свойства cellFactory.
TreeTableView
Компонент TreeTableView представляет собой элемент управления, который отображает неограниченную иерархию данных, представленную в столбцах.
Компонент TreeTableView имеет много общего с элементами управления TreeView и TableView, он объединяет и расширяет некоторые аспекты их функциональности.
Для создания компонента TreeTableView, сначала, как и для таблицы, создается модель данных.
Затем на основе модели данных создается список данных, который будет представлять строки таблицы.
Далее создается корневой узел дерева, и в него добавляются дочерние узлы, которые создаются в том числе и на основе списка данных.
Далее создаются столбцы таблицы с помощью конструктора, в котором можно указать заголовок столбца.
С помощью свойства cellValueFactory класса TreeTableColumn, ячейки столбца таблицы заполняются данными.
При этом свойство cellValueFactory связывает конкретный столбец TreeTableColumnс конкретным полем класса модели данных.
Такое связывание выполняется методом setCellValueFactory с помощью экземпляра класса TreeItemPropertyValueFactory, в конструкторе которого указывается класс модели данных и тип данных ячейки столбца, а также указывается имя поля класса модели данных, с которым нужно связать столбец.
После создания столбцов, создается компонент TreeTableView с помощью конструктора, в котором можно сразу указать корневой узел.
Или же его можно установить позже методом setRoot.
Столбцы добавляются в компонент TreeTableView методом getColumns.setAll.
Как и для таблицы, с помощью метода setTableMenuButtonVisible (true) можно установить контекстное меню, позволяющее регулировать отображение столбцов таблицы.
В этом случае появляется кнопка, открывающая меню, в котором можно выбрать столбцы для их отображения.
С помощью CSS свойства -fx-font можно установить шрифт для компонента TreeTableView.
Размеры компонента TreeTableView устанавливаются методом setPrefSize.
Если ширина и высота компонента TreeTableView недостаточны, чтобы вместить содержимое, появляются полосы прокрутки.
Если ширина и высота избыточны, в таблице отображаются пустые строки и столбцы.
Методом setCursor можно установить курсор для компонента, а методом setTooltip можно установить всплывающую подсказку для компонента.
Столбец TreeTableColumn может содержать набор ObservableList вложенных столбцов, заполнить который можно с помощью метода getColumns.addAll класса TreeTableColumn.
Метод setPlaceholder дает возможность установить узел Node, отображаемый в случае отсутствия данных.
Эта ситуация возникает, если не определить корневой узел для компонента TreeTableView.
Возможность выбора нескольких строк устанавливается методом setSelectionMode с константой MULTIPLE для модели выбора SelectionModel.
Для свойств selectedIndexProperty и selectedItemProperty модели выбора можно установить слушателя, который будет обрабатывать выбор строк таблицы пользователем.
Как и для таблицы, для компонента TreeTableView, данные в столбцах можно сортировать.
Чтобы запретить сортировку данных, нужно вызвать метод setSortable (false) для столбца.
Свойство editable классов TreeTableColumn и TreeTableView определяет редактируемость столбца и таблицы.
По умолчанию это свойство имеет значение false.
Свойство cellFactory класса TreeTableColumn дает возможность наполнить столбец пользовательскими компонентами, представленными классом TreeTableCell, с помощью метода setCellFactory.
У класса TreeTableCell есть стандартные реализации CheckBoxTreeTableCell, ChoiceBoxTreeTableCell, ComboBoxTreeTableCell, ProgressBarTreeTableCell, и TextFieldTreeTableCell.
В этом примере мы передаем в метод setCellFactory ячейку с текстовым полем TextFieldTreeTableCell.
Свойства onEditCancel, onEditCommit и onEditStart обеспечивают обработку событий редактирования.
Здесь мы используем метод setOnEditCommit, который устанавливает обработчик события завершения редактирования, когда пользователь нажимает клавишу Enter.
Для создания столбца со своими, пользовательскими редактируемыми элементами, необходимо создать класс, расширяющий класс TreeTableCell, в котором переопределяются методы startEdit, cancelEdit, commitEdit и updateItem с использованием редактируемых текстовых полей, и наполнить его экземплярами столбец с помощью свойства cellFactory.
ComboBox
Комбинированное поле ComboBox позволяет пользователю выбрать одну из нескольких опций.
Когда количество отображаемых элементов превышает некоторый предел, в раскрывающийся список компонента ComboBox добавляется прокрутка.
Это регулируется свойством visibleRowCount.
Этим ComboBox отличается от компонента ChoiceBox.
Кроме того, у компонента ComboBox есть такие свойства как cellFactory, placeholder, editable, и promptText.
Список выбора ComboBox создается с помощью конструктора, в котором сразу можно указать список элементов выбора.
Набор элементов ObservableList списка ComboBox может быть создан с помощью класса FXCollections.
Другим способом, методом getItems можно получить список ObservableList и добавить в него элементы методом add.
За выбор элементов списка отвечает модель SelectionModel, которая имеет свойства selectedIndex и selectedItem.
К этим свойствам можно присоединить слушателя и обрабатывать выбор пользователя.
Чтобы в списке отображался, например, первый элемент, для модели нужно вызвать метод selectFirst.
Также, как и для списка ChoiceBox, для списка ComboBox нельзя установить множественный выбор элементов списка пользователем.
Методом setValue можно установить отображаемый полем элемент, даже, если его нет в списке.
Методом setVisibleRowCount ограничивается количество отображаемых элементов в выпадающем списке.
Метод setPlaceholder позволяет определить узел, отображаемый в случае отсутствия списка элементов выбора.
Методом setEditable (true) можно сделать поле ComboBox редактируемым.
Метод setPromptText позволяет установить подсказку в редактируемое поле.
Правда при этом нужно убрать с поля фокус.
Обработчик редактирования поля можно установить методом setOnAction, который будет срабатывать при нажатии пользователем клавиши Enter.
В этом обработчике можно добавлять элементы в список, либо менять значения уже существующих элементов списка выбора.
Свойство cellFactory класса ComboBox позволяет заполнить выпадающий список пользовательскими компонентами ListCell.
Класс ListCell представляет отображаемый элемент списка ComboBox.
Изменить свойство cellFactory можно методом setCellFactory, в который можно передать стандартную реализацию ListCell – это CheckBoxListCell, ChoiceBoxListCell, ComboBoxListCell,

